package com.xinjian.jianba.service;

import org.springframework.data.geo.GeoResults;
import org.springframework.data.redis.connection.RedisGeoCommands.DistanceUnit;
import org.springframework.data.redis.connection.RedisGeoCommands.GeoLocation;

public interface RedisService {

	boolean set(String key, String value) throws Exception;

	String get(String key) throws Exception;

	boolean expire(String key, long expire) throws Exception;

	void del(String key) throws Exception;

	/**
	 * 增加地理位置的坐标
	 *
	 * @author liuhaitao
	 * @param lngfloat
	 *            :经度
	 * @param latfloat
	 *            :纬度
	 * @param key
	 *            :缓存key
	 * @return
	 * @return
	 * @exception
	 * @since JDK 1.8
	 */
	public Long geoadd(String geoDb, String key, double lngfloat, double latfloat);

	/**
	 * 通过给定的坐标和距离(km)获取范围类其它的坐标信息
	 *
	 * @author liuhaitao
	 * @param lngfloat
	 *            :经度
	 * @param latfloat
	 *            :纬度
	 * @param distance
	 *            :查询范围
	 * @param limit
	 *            :查询数量
	 * @param unit
	 *            :查询单位(m/km)
	 * @return
	 * @exception
	 * @since JDK 1.8
	 */
	public GeoResults<GeoLocation<String>> radiusGeo(String geoDb, double lngfloat, double latfloat, double distance, Integer limit,
			DistanceUnit unit);

	/**
	 * 移除地理位置信息
	 *
	 * @author liuhaitao
	 * @param
	 * @return
	 * @exception
	 * @since JDK 1.8
	 */
	public Long removeGeo(String geoDb, String k);

	/**
	 * 数量
	 *
	 * @author liuhaitao
	 * @param
	 * @return
	 * @exception
	 * @since JDK 1.8
	 */
	public Long count(String geoDb);

}